package site.shihuan.helpdesk.service.dao;

import org.springframework.stereotype.Repository;
import site.shihuan.helpdesk.service.model.bo.KnowledgeSearchBO;
import site.shihuan.helpdesk.service.model.po.SvcKnowledgePO;

import java.util.List;

/**
 * 知识库(SvcKnowledge)表数据库访问层
 *
 * @author 周世焕
 * @since 2021-03-14 13:33:12
 */
@Repository
public interface SvcKnowledgeDao {

    /**
     * 通过主键查询单条数据
     *
     * @param knowledgeId
     * @return 影响行数
     */
    SvcKnowledgePO selectByPrimaryKey(String knowledgeId);

    /**
     * 新增数据
     *
     * @param svcKnowledge 实例对象
     * @return 影响行数
     */
    int insert(SvcKnowledgePO svcKnowledge);

    /**
     * 新增数据（可选字段）
     *
     * @param svcKnowledge 实例对象
     * @return 影响行数
     */
    int insertSelective(SvcKnowledgePO svcKnowledge);

    /**
     * 修改数据
     *
     * @param svcKnowledge 实例对象
     * @return 影响行数
     */
    int updateByPrimaryKey(SvcKnowledgePO svcKnowledge);

    /**
     * 修改数据(可选字段)
     *
     * @param svcKnowledge 实例对象
     * @return 影响行数
     */
    int updateByPrimaryKeySelective(SvcKnowledgePO svcKnowledge);

    /**
     * 通过主键删除数据
     *
     * @param knowledgeId
     * @return 影响行数
     */
    int deleteByPrimaryKey(String knowledgeId);

    /**
     * 根据searchBO查询
     * @param searchBO
     * @return
     */
    List<SvcKnowledgePO> findByTenantId(KnowledgeSearchBO searchBO);

    /**
     * 删除
     * @param tenantId
     * @param id
     * @return
     */
    int deleteByTenantIdAndId(String tenantId,String id);

    /**
     * 查询热门搜索
     * @param tenantId
     * @return
     */
    List<SvcKnowledgePO> selectHotKnowledgeList(String tenantId);

    /**
     * 查询命中
     * @param tenantId
     * @param knowledgeId
     * @return
     */
    int increaseHit(String tenantId, String knowledgeId);

}
